- Model= Trend + Weekly-Seasonality
- Trend: moving average of last 168 hours
- Seasonality is restricted to the average weekly pattern
=> Very simple model!
-> Code details are homework
n = floor(nrow(Data) / 168)
weekdays = c(rep(1, 24),
rep(2, 24),
rep(3, 24),
rep(4, 24),
rep(5, 24),
rep(6, 24),
rep(7, 24))
DF_AverageWeek = data.frame(
AverageWeekPrice = AverageWeek[1:168],
FullHours = 1:168,
HourOfDay = rep(0:23, 7),
DayOfWeek = weekdays
)
days = lubridate::wday(FullTime, week_start = 1)
hours = lubridate::hour(FullTime)
startingpoint = which(DF_AverageWeek$DayOfWeek == days[1] &
DF_AverageWeek$HourOfDay == hours[1])
SeasonTooLong = c(DF_AverageWeek$AverageWeekPrice[startingpoint:168],
rep(DF_AverageWeek$AverageWeekPrice, n))
DecompositionModel_simple = Trend + SeasonTooLong[1:length(Trend)]